home *** CD-ROM | disk | FTP | other *** search
- /*
- * extfs_defs.h - MacOS types and structures for external file system
- *
- * Basilisk II (C) 1997-2001 Christian Bauer
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
- #ifndef EXTFS_DEFS_H
- #define EXTFS_DEFS_H
-
- #include "macos_util.h"
-
- // Gestalt selectors
- enum {
- gestaltFSAttr = FOURCC('f','s',' ',' '),
- gestaltFullExtFSDispatching = 0,
- gestaltHasFSSpecCalls = 1,
- gestaltHasFileSystemManager = 2,
- gestaltFSMDoesDynamicLoad = 3,
- gestaltFSSupports4GBVols = 4,
- gestaltFSSupports2TBVols = 5,
- gestaltHasExtendedDiskInit = 6,
- gestaltDTMgrSupportsFSM = 7
- };
-
- enum {
- gestaltFSMVersion = FOURCC('f','s','m',' ')
- };
-
- // File attributes
- enum {
- faLocked = 0x01,
- faRFOpen = 0x04,
- faDFOpen = 0x08,
- faIsDir = 0x10,
- faOpen = 0x80
- };
-
- // Volume attributes
- enum {
- vaBusy = 0x40,
- vaHardLock = 0x80,
- vaSoftLock = 0x8000
- };
-
- // vMAttrib (GetVolParms) constants
- enum {
- kLimitFCBs = 1 << 31,
- kLocalWList = 1 << 30,
- kNoMiniFndr = 1 << 29,
- kNoVNEdit = 1 << 28,
- kNoLclSync = 1 << 27,
- kTrshOffLine = 1 << 26,
- kNoSwitchTo = 1 << 25,
- kNoDeskItems = 1 << 20,
- kNoBootBlks = 1 << 19,
- kAccessCntl = 1 << 18,
- kNoSysDir = 1 << 17,
- kHasExtFSVol = 1 << 16,
- kHasOpenDeny = 1 << 15,
- kHasCopyFile = 1 << 14,
- kHasMoveRename = 1 << 13,
- kHasDesktopMgr = 1 << 12,
- kHasShortName = 1 << 11,
- kHasFolderLock = 1 << 10,
- kHasPersonalAccessPrivileges = 1 << 9,
- kHasUserGroupList = 1 << 8,
- kHasCatSearch = 1 << 7,
- kHasFileIDs = 1 << 6,
- kHasBTreeMgr = 1 << 5,
- kHasBlankAccessPrivileges = 1 << 4,
- kSupportsAsyncRequests = 1 << 3
- };
-
- enum {
- fsUsrCNID = 16,
- kHFSBit = 9,
- kHFSMask = 0x0200,
- kAsyncBit = 10,
- kAsyncMask = 0x0400
- };
-
- // HFSCIProc selectCode values
- enum {
- kFSMOpen = 0xA000,
- kFSMClose = 0xA001,
- kFSMRead = 0xA002,
- kFSMWrite = 0xA003,
- kFSMGetVolInfo = 0xA007,
- kFSMCreate = 0xA008,
- kFSMDelete = 0xA009,
- kFSMOpenRF = 0xA00A,
- kFSMRename = 0xA00B,
- kFSMGetFileInfo = 0xA00C,
- kFSMSetFileInfo = 0xA00D,
- kFSMUnmountVol = 0xA00E,
- kFSMMountVol = 0xA00F,
- kFSMAllocate = 0xA010,
- kFSMGetEOF = 0xA011,
- kFSMSetEOF = 0xA012,
- kFSMFlushVol = 0xA013,
- kFSMGetVol = 0xA014,
- kFSMSetVol = 0xA015,
- kFSMEject = 0xA017,
- kFSMGetFPos = 0xA018,
- kFSMOffline = 0xA035,
- kFSMSetFilLock = 0xA041,
- kFSMRstFilLock = 0xA042,
- kFSMSetFilType = 0xA043,
- kFSMSetFPos = 0xA044,
- kFSMFlushFile = 0xA045,
- kFSMOpenWD = 0x0001,
- kFSMCloseWD = 0x0002,
- kFSMCatMove = 0x0005,
- kFSMDirCreate = 0x0006,
- kFSMGetWDInfo = 0x0007,
- kFSMGetFCBInfo = 0x0008,
- kFSMGetCatInfo = 0x0009,
- kFSMSetCatInfo = 0x000A,
- kFSMSetVolInfo = 0x000B,
- kFSMLockRng = 0x0010,
- kFSMUnlockRng = 0x0011,
- kFSMXGetVolInfo = 0x0012,
- kFSMCreateFileIDRef = 0x0014,
- kFSMDeleteFileIDRef = 0x0015,
- kFSMResolveFileIDRef = 0x0016,
- kFSMExchangeFiles = 0x0017,
- kFSMCatSearch = 0x0018,
- kFSMOpenDF = 0x001A,
- kFSMMakeFSSpec = 0x001B,
- kFSMDTGetPath = 0x0020,
- kFSMDTCloseDown = 0x0021,
- kFSMDTAddIcon = 0x0022,
- kFSMDTGetIcon = 0x0023,
- kFSMDTGetIconInfo = 0x0024,
- kFSMDTAddAPPL = 0x0025,
- kFSMDTRemoveAPPL = 0x0026,
- kFSMDTGetAPPL = 0x0027,
- kFSMDTSetComment = 0x0028,
- kFSMDTRemoveComment = 0x0029,
- kFSMDTGetComment = 0x002A,
- kFSMDTFlush = 0x002B,
- kFSMDTReset = 0x002C,
- kFSMDTGetInfo = 0x002D,
- kFSMDTOpenInform = 0x002E,
- kFSMDTDelete = 0x002F,
- kFSMGetVolParms = 0x0030,
- kFSMGetLogInInfo = 0x0031,
- kFSMGetDirAccess = 0x0032,
- kFSMSetDirAccess = 0x0033,
- kFSMMapID = 0x0034,
- kFSMMapName = 0x0035,
- kFSMCopyFile = 0x0036,
- kFSMMoveRename = 0x0037,
- kFSMOpenDeny = 0x0038,
- kFSMOpenRFDeny = 0x0039,
- kFSMGetXCatInfo = 0x003A,
- kFSMGetVolMountInfoSize = 0x003F,
- kFSMGetVolMountInfo = 0x0040,
- kFSMVolumeMount = 0x0041,
- kFSMShare = 0x0042,
- kFSMUnShare = 0x0043,
- kFSMGetUGEntry = 0x0044,
- kFSMGetForeignPrivs = 0x0060,
- kFSMSetForeignPrivs = 0x0061
- };
-
- // UTDetermineVol status values
- enum {
- dtmvError = 0,
- dtmvFullPathname = 1,
- dtmvVRefNum = 2,
- dtmvWDRefNum = 3,
- dtmvDriveNum = 4,
- dtmvDefault = 5
- };
-
- // Miscellaneous constants used by FSM
- enum {
- fsdVersion1 = 1,
- fsmIgnoreFSID = 0xFFFE,
- fsmGenericFSID = 0xFFFF
- };
-
- // compInterfMask bits common to all FSM components
- enum {
- fsmComponentEnableBit = 31,
- fsmComponentEnableMask = (long)0x80000000,
- fsmComponentBusyBit = 30,
- fsmComponentBusyMask = 0x40000000
- };
-
- // compInterfMask bits specific to HFS component
- enum {
- hfsCIDoesHFSBit = 23,
- hfsCIDoesHFSMask = 0x00800000,
- hfsCIDoesAppleShareBit = 22,
- hfsCIDoesAppleShareMask = 0x00400000,
- hfsCIDoesDeskTopBit = 21,
- hfsCIDoesDeskTopMask = 0x00200000,
- hfsCIDoesDynamicLoadBit = 20,
- hfsCIDoesDynamicLoadMask = 0x00100000,
- hfsCIResourceLoadedBit = 19,
- hfsCIResourceLoadedMask = 0x00080000,
- hfsCIHasHLL2PProcBit = 18,
- hfsCIHasHLL2PProcMask = 0x00040000,
- hfsCIWantsDTSupportBit = 17,
- hfsCIWantsDTSupportMask = 0x00020000
- };
-
- // FCBRec.fcbFlags bits
- enum {
- fcbWriteBit = 0,
- fcbWriteMask = 0x01,
- fcbResourceBit = 1,
- fcbResourceMask = 0x02,
- fcbWriteLockedBit = 2,
- fcbWriteLockedMask = 0x04,
- fcbSharedWriteBit = 4,
- fcbSharedWriteMask = 0x10,
- fcbFileLockedBit = 5,
- fcbFileLockedMask = 0x20,
- fcbOwnClumpBit = 6,
- fcbOwnClumpMask = 0x40,
- fcbModifiedBit = 7,
- fcbModifiedMask = 0x80
- };
-
- // InformFSM messages
- enum {
- fsmNopMessage = 0,
- fsmDrvQElChangedMessage = 1,
- fsmGetFSIconMessage = 2
- };
-
- // Messages passed to the fileSystemCommProc
- enum {
- ffsNopMessage = 0,
- ffsGetIconMessage = 1,
- ffsIDDiskMessage = 2,
- ffsLoadMessage = 3,
- ffsUnloadMessage = 4,
- ffsIDVolMountMessage = 5,
- ffsInformMessage = 6,
- ffsGetIconInfoMessage = 7
- };
-
- // Error codes from FSM functions
- enum {
- fsmFFSNotFoundErr = -431,
- fsmBusyFFSErr = -432,
- fsmBadFFSNameErr = -433,
- fsmBadFSDLenErr = -434,
- fsmDuplicateFSIDErr = -435,
- fsmBadFSDVersionErr = -436,
- fsmNoAlternateStackErr = -437,
- fsmUnknownFSMMessageErr = -438
- };
-
- // paramBlock for ffsGetIconMessage and fsmGetFSIconMessage
- enum {
- kLargeIcon = 1
- };
-
- enum { // FSMGetIconRec struct
- iconBufferPtr = 2,
- requestSize = 6,
- actualSize = 10,
- iconType = 14,
- isEjectable = 15,
- driveQElemPtr = 16,
- fileSystemSpecPtr = 20
- };
-
- enum { // VolumeMountInfoHeader struct
- vmiLength = 0,
- vmiMedia = 2,
- vmiFlags = 6,
- SIZEOF_VolumeMountInfoHeader = 8
- };
-
- enum { // GetVolParmsInfoBuffer struct
- vMVersion = 0,
- vMAttrib = 2,
- vMLocalHand = 6,
- vMServerAdr = 10,
- vMVolumeGrade = 14,
- vMForeignPrivID = 18,
- SIZEOF_GetVolParmsInfoBuffer = 20
- };
-
- // Finder Flags
- enum {
- kIsOnDesk = 0x0001,
- kColor = 0x000E,
- kIsShared = 0x0040,
- kHasBeenInited = 0x0100,
- kHasCustomIcon = 0x0400,
- kIsStationery = 0x0800,
- kNameLocked = 0x1000,
- kHasBundle = 0x2000,
- kIsInvisible = 0x4000,
- kIsAlias = 0x8000
- };
-
- enum { // FInfo struct
- fdType = 0,
- fdCreator = 4,
- fdFlags = 8,
- fdLocation = 10,
- fdFldr = 14,
- SIZEOF_FInfo = 16
- };
-
- enum { // FXInfo struct
- fdIconID = 0,
- fdUnused = 2,
- fdScript = 8,
- fdXFlags = 9,
- fdComment = 10,
- fdPutAway = 12,
- SIZEOF_FXInfo = 16
- };
-
- enum { // HFileParam/HFileInfo struct
- ioFRefNum = 24,
- ioFVersNum = 26,
- ioFDirIndex = 28,
- ioFlAttrib = 30,
- ioACUser = 31,
- ioFlFndrInfo = 32,
- ioDirID = 48,
- ioFlStBlk = 52,
- ioFlLgLen = 54,
- ioFlPyLen = 58,
- ioFlRStBlk = 62,
- ioFlRLgLen = 64,
- ioFlRPyLen = 68,
- ioFlCrDat = 72,
- ioFlMdDat = 76,
- ioFlBkDat = 80,
- ioFlXFndrInfo = 84,
- ioFlParID = 100,
- ioFlClpSiz = 104
- };
-
- enum { // DInfo struct
- frRect = 0,
- frFlags = 8,
- frLocation = 10,
- frView = 14,
- SIZEOF_DInfo = 16
- };
-
- enum { // DXInfo struct
- frScroll = 0,
- frOpenChain = 4,
- frScript = 8,
- frXFlags = 9,
- frComment = 10,
- frPutAway = 12,
- SIZEOF_DXInfo = 16
- };
-
- enum { // HDirParam/DirInfo struct
- ioDrUsrWds = 32,
- ioDrDirID = 48,
- ioDrNmFls = 52,
- ioDrCrDat = 72,
- ioDrMdDat = 76,
- ioDrBkDat = 80,
- ioDrFndrInfo = 84,
- ioDrParID = 100
- };
-
- enum { // WDParam struct
- ioWDIndex = 26,
- ioWDProcID = 28,
- ioWDVRefNum = 32,
- ioWDDirID = 48,
- SIZEOF_WDParam = 52
- };
-
- enum { // HVolumeParam struct
- ioVolIndex = 28,
- ioVCrDate = 30,
- ioVLsMod = 34,
- ioVAtrb = 38,
- ioVNmFls = 40,
- ioVBitMap = 42,
- ioAllocPtr = 44,
- ioVNmAlBlks = 46,
- ioVAlBlkSiz = 48,
- ioVClpSiz = 52,
- ioAlBlSt = 56,
- ioVNxtCNID = 58,
- ioVFrBlk = 62,
- ioVSigWord = 64,
- ioVDrvInfo = 66,
- ioVDRefNum = 68,
- ioVFSID = 70,
- ioVBkUp = 72,
- ioVSeqNum = 76,
- ioVWrCnt = 78,
- ioVFilCnt = 82,
- ioVDirCnt = 86,
- ioVFndrInfo = 90
- };
-
- enum { // CMovePBRec struct
- ioNewName = 28,
- ioNewDirID = 36
- };
-
- enum { // FCBPBRec struct
- ioFCBIndx = 28,
- ioFCBFlNm = 32,
- ioFCBFlags = 36,
- ioFCBStBlk = 38,
- ioFCBEOF = 40,
- ioFCBPLen = 44,
- ioFCBCrPs = 48,
- ioFCBVRefNum = 52,
- ioFCBClpSiz = 54,
- ioFCBParID = 58
- };
-
- // Volume control block
- enum { // VCB struct
- vcbFlags = 6,
- vcbSigWord = 8,
- vcbCrDate = 10,
- vcbLsMod = 14,
- vcbAtrb = 18,
- vcbNmFls = 20,
- vcbVBMSt = 22,
- vcbAllocPtr = 24,
- vcbNmAlBlks = 26,
- vcbAlBlkSiz = 28,
- vcbClpSiz = 32,
- vcbAlBlSt = 36,
- vcbNxtCNID = 38,
- vcbFreeBks = 42,
- vcbVN = 44,
- vcbDrvNum = 72,
- vcbDRefNum = 74,
- vcbFSID = 76,
- vcbVRefNum = 78,
- vcbMAdr = 80,
- vcbBufAdr = 84,
- vcbMLen = 88,
- vcbDirIndex = 90,
- vcbDirBlk = 92,
- vcbVolBkUp = 94,
- vcbVSeqNum = 98,
- vcbWrCnt = 100,
- vcbXTClpSiz = 104,
- vcbCTClpSiz = 108,
- vcbNmRtDirs = 112,
- vcbFilCnt = 114,
- vcbDirCnt = 118,
- vcbFndrInfo = 122,
- vcbVCSize = 154,
- vcbVBMCSiz = 156,
- vcbCtlCSiz = 158,
- vcbXTAlBlks = 160,
- vcbCTAlBlks = 162,
- vcbXTRef = 164,
- vcbCTRef = 166,
- vcbCtlBuf = 168,
- vcbDirIDM = 172,
- vcbOffsM = 176,
- SIZEOF_VCB = 178
- };
-
- // Working directory control block
- enum { // WDCBRec struct
- wdVCBPtr = 0,
- wdDirID = 4,
- wdCatHint = 8,
- wdProcID = 12,
- SIZEOF_WDCBRec = 16
- };
-
- // File control block
- enum { // FCBRec struct
- fcbFlNm = 0,
- fcbFlags = 4,
- fcbTypByt = 5,
- fcbSBlk = 6,
- fcbEOF = 8,
- fcbPLen = 12,
- fcbCrPs = 16,
- fcbVPtr = 20,
- fcbBfAdr = 24,
- fcbFlPos = 28,
- fcbClmpSize = 30,
- fcbBTCBPtr = 34,
- fcbExtRec = 38,
- fcbFType = 50,
- fcbCatPos = 54,
- fcbDirID = 58,
- fcbCName = 62
- };
-
- enum { // ParsePathRec struct
- ppNamePtr = 0,
- ppStartOffset = 4,
- ppComponentLength = 6,
- ppMoreName = 8,
- ppFoundDelimiter = 9,
- SIZEOF_ParsePathRec = 10
- };
-
- enum { // HFSCIRec struct
- compInterfMask = 0,
- compInterfProc = 4,
- log2PhyProc = 8,
- stackTop = 12,
- stackSize = 16,
- stackPtr = 20,
- idSector = 28,
- SIZEOF_HFSCIRec = 40
- };
-
- enum { // DICIRec struct
- maxVolNameLength = 8,
- blockSize = 10,
- SIZEOF_DICIRec = 24
- };
-
- enum { // FSDRec struct
- fsdLink = 0,
- fsdLength = 4,
- fsdVersion = 6,
- fileSystemFSID = 8,
- fileSystemName = 10,
- fileSystemSpec = 42,
- fileSystemGlobalsPtr = 112,
- fileSystemCommProc = 116,
- fsdHFSCI = 132,
- fsdDICI = 172,
- SIZEOF_FSDRec = 196
- };
-
- #endif
-